1. Technical Field
Embodiments described herein are related to the field of interrupt controllers.
2. Description of the Related Art
Digital systems generally include one or more processors that execute software, and various hardware devices that can be controlled by the software. For example, digital systems include computer systems such as desktops, laptops, net tops, servers, workstations, etc.; mobile devices such as cellular phones, personal digital assistants, smart phones, etc.; and other special purpose devices. The hardware devices may generally provide certain functionality such as storage (e.g. disk drives, flash memory, optical drives, etc.), communications (e.g. networking, wireless operation, etc.), and other input/output functionality (touch screen, keyboard, mouse, display, audio, etc.).
The hardware devices are typically designed to operate for a period of time without software intervention. When software intervention is needed (e.g. when a driver corresponding to the device needs to be executed), the hardware devices may signal an interrupt. The interrupt is delivered to one of the processors in the system, which can suspend execution of a task to execute code corresponding to the interrupt (e.g. interrupt service routine code and/or driver code).
When systems include more than one processor, a given interrupt needs to be provided to one (and only one) of the processors. A static distribution scheme can be used, in which each device's interrupt is mapped to a particular processor, and the mapping is not changed very frequently. That is, the same processor generally services the given interrupt. Such static schemes can result in long interrupt latencies if the targeted processor is not able to respond to the interrupt immediately. If multiple processors can receive a given interrupt, there is a race condition when the processors attempt to respond to the interrupt. Such race conditions can reduce performance and/or power efficiency in the system.